home *** CD-ROM | disk | FTP | other *** search
Text File | 1989-09-30 | 46.2 KB | 1,337 lines |
- Newsgroups: comp.sources.misc
- subject: v08i067: cz text to PostScript system, part 03 of 14
- from: allbery@uunet.UU.NET (Brandon S. Allbery - comp.sources.misc)
- Reply-To: howard@dahlbeck.ericsson.se (Howard Gayle)
-
- Posting-number: Volume 8, Issue 67
- Submitted-by: howard@dahlbeck.ericsson.se (Howard Gayle)
- Archive-name: cz/part03
-
- #! /bin/sh
- # This is a shell archive. Remove anything before this line, then feed it
- # into a shell via "sh file" or similar. To overwrite existing files,
- # type "sh file -c".
- # The tool that generated this appeared in the comp.sources.unix newsgroup;
- # send mail to comp-sources-unix@uunet.uu.net if you want that tool.
- # If this archive is complete, you will see the following message at the end:
- # "End of archive 3 (of 14)."
- # Contents: 78dkus.c 78triFreq.c MakeCommon T-61.p4 b.bib bytefreq.1
- # Wrapped by howard@dahlbeck on Mon Sep 25 07:15:13 1989
- PATH=/bin:/usr/bin:/usr/ucb ; export PATH
- if test -f '78dkus.c' -a "${1}" != "-c" ; then
- echo shar: Will not clobber existing file \"'78dkus.c'\"
- else
- echo shar: Extracting \"'78dkus.c'\" \(30798 characters\)
- sed "s/^X//" >'78dkus.c' <<'END_OF_FILE'
- X/*
- X * 78dkus - convert Danish or (US) English from ISO 646 to ISO 8859/1
- X */
- X
- X#ifndef lint
- Xstatic char _cpyrgt[] = "Copyright 1989 Howard Lee Gayle";
- X#endif lint
- X
- X/*
- X * This program is free software; you can redistribute it and/or modify
- X * it under the terms of the GNU General Public License version 1,
- X * as published by the Free Software Foundation.
- X *
- X * This program is distributed in the hope that it will be useful,
- X * but WITHOUT ANY WARRANTY; without even the implied warranty of
- X * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- X * GNU General Public License for more details.
- X *
- X * You should have received a copy of the GNU General Public License
- X * along with this program; if not, write to the Free Software
- X * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
- X */
- X
- X#include <stdio.h>
- X#include <howard/port.h>
- X#include <howard/version.h>
- X#include <howard/usage.h>
- X
- XMAINVER ("@(#)$Header: 78dkus.c,v 1.2 89/08/26 13:26:06 howard Exp $");
- XUSAGE ("[-# shar-points] [-A attack] [-B blank-line-smoothing] [-D decay] [-b body-points] [-c colon-smoothing] [-d] [-f] [-m] [-s lines] [-t threshold]");
- X
- X#include <ctype.h>
- X#include <limits.h>
- X#include <string.h>
- X#include <howard/a2.h>
- X#include <howard/malf.h>
- X#include <howard/registers.i>
- X#include "cz.h"
- X#include "78.h"
- X
- XPRIVATE byteT byte2t[256] = /* Map each byte to a trigram code.*/
- X{
- X32,
- X32,
- X32,
- X32,
- X32,
- X32,
- X32,
- X32,
- X32,
- X32,
- X32,
- X32,
- X32,
- X32,
- X32,
- X32,
- X32,
- X32,
- X32,
- X32,
- X32,
- X32,
- X32,
- X32,
- X32,
- X32,
- X32,
- X32,
- X32,
- X32,
- X32,
- X32,
- X32,
- X32,
- X32,
- X32,
- X32,
- X32,
- X32,
- X32,
- X32,
- X32,
- X32,
- X32,
- X32,
- X32,
- X32,
- X32,
- X32,
- X32,
- X32,
- X32,
- X32,
- X32,
- X32,
- X32,
- X32,
- X32,
- X32,
- X32,
- X32,
- X32,
- X32,
- X32,
- X32,
- X0,
- X1,
- X2,
- X3,
- X4,
- X5,
- X6,
- X7,
- X8,
- X9,
- X10,
- X11,
- X12,
- X13,
- X14,
- X15,
- X16,
- X17,
- X18,
- X19,
- X20,
- X21,
- X22,
- X23,
- X24,
- X25,
- X27,
- X28,
- X26,
- X32,
- X32,
- X32,
- X0,
- X1,
- X2,
- X3,
- X4,
- X5,
- X6,
- X7,
- X8,
- X9,
- X10,
- X11,
- X12,
- X13,
- X14,
- X15,
- X16,
- X17,
- X18,
- X19,
- X20,
- X21,
- X22,
- X23,
- X24,
- X25,
- X27,
- X28,
- X26,
- X32,
- X32,
- X32,
- X32,
- X32,
- X32,
- X32,
- X32,
- X32,
- X32,
- X32,
- X32,
- X32,
- X32,
- X32,
- X32,
- X32,
- X32,
- X32,
- X32,
- X32,
- X32,
- X32,
- X32,
- X32,
- X32,
- X32,
- X32,
- X32,
- X32,
- X32,
- X32,
- X32,
- X32,
- X32,
- X32,
- X32,
- X32,
- X32,
- X32,
- X32,
- X32,
- X32,
- X32,
- X32,
- X32,
- X32,
- X32,
- X32,
- X32,
- X32,
- X32,
- X32,
- X32,
- X32,
- X32,
- X32,
- X32,
- X32,
- X32,
- X32,
- X32,
- X32,
- X32,
- X32,
- X32,
- X32,
- X32,
- X32,
- X32,
- X32,
- X26,
- X27,
- X32,
- X32,
- X32,
- X32,
- X32,
- X32,
- X32,
- X32,
- X32,
- X32,
- X32,
- X32,
- X32,
- X32,
- X32,
- X32,
- X32,
- X28,
- X32,
- X32,
- X32,
- X32,
- X32,
- X32,
- X32,
- X32,
- X32,
- X32,
- X32,
- X32,
- X26,
- X27,
- X32,
- X32,
- X32,
- X32,
- X32,
- X32,
- X32,
- X32,
- X32,
- X32,
- X32,
- X32,
- X32,
- X32,
- X32,
- X32,
- X32,
- X28,
- X32,
- X32,
- X32,
- X32,
- X32,
- X32,
- X32,
- X};
- X
- XPRIVATE byteT dk8[256] = /* Map Danish ISO 646 to ISO 8859/1.*/
- X{
- X0000,/* 0/ 0 0 0 0 NUL (null) */
- X0001,/* 0/ 1 1 1 1 SOH (start of heading) */
- X0002,/* 0/ 2 2 2 2 STX (start of text) */
- X0003,/* 0/ 3 3 3 3 ETX (end of text) */
- X0004,/* 0/ 4 4 4 4 EOT (end of transmission) */
- X0005,/* 0/ 5 5 5 5 ENQ (enquiry) */
- X0006,/* 0/ 6 6 6 6 ACK (acknowledge) */
- X0007,/* 0/ 7 7 7 7 BEL (bell) */
- X0010,/* 0/ 8 10 8 8 BS (backspace) */
- X0011,/* 0/ 9 11 9 9 HT (horizontal tabulation) */
- X0012,/* 0/10 12 10 A LF (line feed) */
- X0013,/* 0/11 13 11 B VT (vertical tabulation) */
- X0014,/* 0/12 14 12 C FF (form feed) */
- X0015,/* 0/13 15 13 D CR (carriage return) */
- X0016,/* 0/14 16 14 E SO (shift out) */
- X0017,/* 0/15 17 15 F SI (shift in) */
- X0020,/* 1/ 0 20 16 10 DLE (data link escape) */
- X0021,/* 1/ 1 21 17 11 DC1 (device control 1) */
- X0022,/* 1/ 2 22 18 12 DC2 (device control 2) */
- X0023,/* 1/ 3 23 19 13 DC3 (device control 3) */
- X0024,/* 1/ 4 24 20 14 DC4 (device control 4) */
- X0025,/* 1/ 5 25 21 15 NAK (negative aknowledge) */
- X0026,/* 1/ 6 26 22 16 SYN (synchronous idle) */
- X0027,/* 1/ 7 27 23 17 ETB (end of transmission block) */
- X0030,/* 1/ 8 30 24 18 CAN (cancel) */
- X0031,/* 1/ 9 31 25 19 EM (end of medium) */
- X0032,/* 1/10 32 26 1A SUB (substitute character) */
- X0033,/* 1/11 33 27 1B ESC (escape) */
- X0034,/* 1/12 34 28 1C IS4/FS (information separator 4 / file separator)*/
- X0035,/* 1/13 35 29 1D IS3/GS (information separator 3 / group separator) */
- X0036,/* 1/14 36 30 1E IS2/RS (information separator 2 / record separator)*/
- X0037,/* 1/15 37 31 1F IS1/US (information separator 1 / unit separator)*/
- X0040,/* 2/ 0 40 32 20 space */
- X0041,/* 2/ 1 41 33 21 exclamation mark */
- X0042,/* 2/ 2 42 34 22 quotation mark */
- X0043,/* 2/ 3 43 35 23 number sign */
- X0044,/* 2/ 4 44 36 24 dollar sign */
- X0045,/* 2/ 5 45 37 25 percent sign */
- X0046,/* 2/ 6 46 38 26 ampersand */
- X0047,/* 2/ 7 47 39 27 apostrophe */
- X0050,/* 2/ 8 50 40 28 left parenthesis */
- X0051,/* 2/ 9 51 41 29 right parenthesis */
- X0052,/* 2/10 52 42 2A asterisk */
- X0053,/* 2/11 53 43 2B plus sign */
- X0054,/* 2/12 54 44 2C comma */
- X0055,/* 2/13 55 45 2D hyphen, minus sign */
- X0056,/* 2/14 56 46 2E full stop */
- X0057,/* 2/15 57 47 2F solidus */
- X0060,/* 3/ 0 60 48 30 digit zero */
- X0061,/* 3/ 1 61 49 31 digit one */
- X0062,/* 3/ 2 62 50 32 digit two */
- X0063,/* 3/ 3 63 51 33 digit three */
- X0064,/* 3/ 4 64 52 34 digit four */
- X0065,/* 3/ 5 65 53 35 digit five */
- X0066,/* 3/ 6 66 54 36 digit six */
- X0067,/* 3/ 7 67 55 37 digit seven */
- X0070,/* 3/ 8 70 56 38 digit eight */
- X0071,/* 3/ 9 71 57 39 digit nine */
- X0072,/* 3/10 72 58 3A colon */
- X0073,/* 3/11 73 59 3B semicolon */
- X0074,/* 3/12 74 60 3C less-than sign */
- X0075,/* 3/13 75 61 3D equals sign */
- X0076,/* 3/14 76 62 3E greater-than sign */
- X0077,/* 3/15 77 63 3F question mark */
- X0100,/* 4/ 0 100 64 40 commercial at */
- X0101,/* 4/ 1 101 65 41 A */
- X0102,/* 4/ 2 102 66 42 B */
- X0103,/* 4/ 3 103 67 43 C */
- X0104,/* 4/ 4 104 68 44 D */
- X0105,/* 4/ 5 105 69 45 E */
- X0106,/* 4/ 6 106 70 46 F */
- X0107,/* 4/ 7 107 71 47 G */
- X0110,/* 4/ 8 110 72 48 H */
- X0111,/* 4/ 9 111 73 49 I */
- X0112,/* 4/10 112 74 4A J */
- X0113,/* 4/11 113 75 4B K */
- X0114,/* 4/12 114 76 4C L */
- X0115,/* 4/13 115 77 4D M */
- X0116,/* 4/14 116 78 4E N */
- X0117,/* 4/15 117 79 4F O */
- X0120,/* 5/ 0 120 80 50 P */
- X0121,/* 5/ 1 121 81 51 Q */
- X0122,/* 5/ 2 122 82 52 R */
- X0123,/* 5/ 3 123 83 53 S */
- X0124,/* 5/ 4 124 84 54 T */
- X0125,/* 5/ 5 125 85 55 U */
- X0126,/* 5/ 6 126 86 56 V */
- X0127,/* 5/ 7 127 87 57 W */
- X0130,/* 5/ 8 130 88 58 X */
- X0131,/* 5/ 9 131 89 59 Y */
- X0132,/* 5/10 132 90 5A Z */
- X0306,/* 5/11 133 91 5B left square bracket */
- X0330,/* 5/12 134 92 5C reverse solidus */
- X0305,/* 5/13 135 93 5D right square bracket */
- X0136,/* 5/14 136 94 5E circumflex accent */
- X0137,/* 5/15 137 95 5F low line, underline */
- X0140,/* 6/ 0 140 96 60 grave accent */
- X0141,/* 6/ 1 141 97 61 a */
- X0142,/* 6/ 2 142 98 62 b */
- X0143,/* 6/ 3 143 99 63 c */
- X0144,/* 6/ 4 144 100 64 d */
- X0145,/* 6/ 5 145 101 65 e */
- X0146,/* 6/ 6 146 102 66 f */
- X0147,/* 6/ 7 147 103 67 g */
- X0150,/* 6/ 8 150 104 68 h */
- X0151,/* 6/ 9 151 105 69 i */
- X0152,/* 6/10 152 106 6A j */
- X0153,/* 6/11 153 107 6B k */
- X0154,/* 6/12 154 108 6C l */
- X0155,/* 6/13 155 109 6D m */
- X0156,/* 6/14 156 110 6E n */
- X0157,/* 6/15 157 111 6F o */
- X0160,/* 7/ 0 160 112 70 p */
- X0161,/* 7/ 1 161 113 71 q */
- X0162,/* 7/ 2 162 114 72 r */
- X0163,/* 7/ 3 163 115 73 s */
- X0164,/* 7/ 4 164 116 74 t */
- X0165,/* 7/ 5 165 117 75 u */
- X0166,/* 7/ 6 166 118 76 v */
- X0167,/* 7/ 7 167 119 77 w */
- X0170,/* 7/ 8 170 120 78 x */
- X0171,/* 7/ 9 171 121 79 y */
- X0172,/* 7/10 172 122 7A z */
- X0346,/* 7/11 173 123 7B left curly bracket */
- X0370,/* 7/12 174 124 7C vertical line */
- X0345,/* 7/13 175 125 7D right curly bracket */
- X0176,/* 7/14 176 126 7E tilde */
- X0177,/* 7/15 177 127 7F DEL (delete) */
- X0200,/* 8/ 0 200 128 80 */
- X0201,/* 8/ 1 201 129 81 */
- X0202,/* 8/ 2 202 130 82 */
- X0203,/* 8/ 3 203 131 83 */
- X0204,/* 8/ 4 204 132 84 */
- X0205,/* 8/ 5 205 133 85 */
- X0206,/* 8/ 6 206 134 86 */
- X0207,/* 8/ 7 207 135 87 */
- X0210,/* 8/ 8 210 136 88 */
- X0211,/* 8/ 9 211 137 89 */
- X0212,/* 8/10 212 138 8A */
- X0213,/* 8/11 213 139 8B */
- X0214,/* 8/12 214 140 8C */
- X0215,/* 8/13 215 141 8D */
- X0216,/* 8/14 216 142 8E */
- X0217,/* 8/15 217 143 8F */
- X0220,/* 9/ 0 220 144 90 */
- X0221,/* 9/ 1 221 145 91 */
- X0222,/* 9/ 2 222 146 92 */
- X0223,/* 9/ 3 223 147 93 */
- X0224,/* 9/ 4 224 148 94 */
- X0225,/* 9/ 5 225 149 95 */
- X0226,/* 9/ 6 226 150 96 */
- X0227,/* 9/ 7 227 151 97 */
- X0230,/* 9/ 8 230 152 98 */
- X0231,/* 9/ 9 231 153 99 */
- X0232,/* 9/10 232 154 9A */
- X0233,/* 9/11 233 155 9B */
- X0234,/* 9/12 234 156 9C */
- X0235,/* 9/13 235 157 9D */
- X0236,/* 9/14 236 158 9E */
- X0237,/* 9/15 237 159 9F */
- X0240,/*10/ 0 240 160 A0 NBSP (no-break space) */
- X0241,/*10/ 1 241 161 A1 inverted exclamation mark */
- X0242,/*10/ 2 242 162 A2 cent sign */
- X0243,/*10/ 3 243 163 A3 pound sign */
- X0244,/*10/ 4 244 164 A4 general currency sign */
- X0245,/*10/ 5 245 165 A5 yen sign */
- X0246,/*10/ 6 246 166 A6 broken vertical line */
- X0247,/*10/ 7 247 167 A7 section sign */
- X0250,/*10/ 8 250 168 A8 diaeresis */
- X0251,/*10/ 9 251 169 A9 copyright sign */
- X0252,/*10/10 252 170 AA ordinal indicator, feminine */
- X0253,/*10/11 253 171 AB angle quotation mark left */
- X0254,/*10/12 254 172 AC not sign */
- X0255,/*10/13 255 173 AD soft hyphen */
- X0256,/*10/14 256 174 AE registered sign */
- X0257,/*10/15 257 175 AF macron */
- X0260,/*11/ 0 260 176 B0 degree sign */
- X0261,/*11/ 1 261 177 B1 plus or minus sign */
- X0262,/*11/ 2 262 178 B2 superscript two */
- X0263,/*11/ 3 263 179 B3 superscript three */
- X0264,/*11/ 4 264 180 B4 acute accent */
- X0265,/*11/ 5 265 181 B5 micro sign */
- X0266,/*11/ 6 266 182 B6 pilcrow */
- X0267,/*11/ 7 267 183 B7 middle dot */
- X0270,/*11/ 8 270 184 B8 cedilla */
- X0271,/*11/ 9 271 185 B9 superscript one */
- X0272,/*11/10 272 186 BA ordinal indicator, masculine */
- X0273,/*11/11 273 187 BB angle quotation mark right */
- X0274,/*11/12 274 188 BC fraction one-quarter */
- X0275,/*11/13 275 189 BD fraction one-half */
- X0276,/*11/14 276 190 BE fraction three-quarters */
- X0277,/*11/15 277 191 BF inverted question mark */
- X0300,/*12/ 0 300 192 C0 capital A with grave accent */
- X0301,/*12/ 1 301 193 C1 capital A with acute accent */
- X0302,/*12/ 2 302 194 C2 capital A with circumflex accent */
- X0303,/*12/ 3 303 195 C3 capital A with tilde */
- X0304,/*12/ 4 304 196 C4 capital A with diaeresis or umlaut mark */
- X0305,/*12/ 5 305 197 C5 capital A with ring */
- X0306,/*12/ 6 306 198 C6 capital AE diphthong */
- X0307,/*12/ 7 307 199 C7 capital C with cedilla */
- X0310,/*12/ 8 310 200 C8 capital E with grave accent */
- X0311,/*12/ 9 311 201 C9 capital E with acute accent */
- X0312,/*12/10 312 202 CA capital E with circumflex accent */
- X0313,/*12/11 313 203 CB capital E with diaeresis or umlaut mark */
- X0314,/*12/12 314 204 CC capital I with grave accent */
- X0315,/*12/13 315 205 CD capital I with acute accent */
- X0316,/*12/14 316 206 CE capital I with circumflex accent */
- X0317,/*12/15 317 207 CF capital I with diaeresis or umlaut mark */
- X0320,/*13/ 0 320 208 D0 capital D with stroke, Icelandic eth */
- X0321,/*13/ 1 321 209 D1 capital N with tilde */
- X0322,/*13/ 2 322 210 D2 capital O with grave accent */
- X0323,/*13/ 3 323 211 D3 capital O with acute accent */
- X0324,/*13/ 4 324 212 D4 capital O with circumflex accent */
- X0325,/*13/ 5 325 213 D5 capital O with tilde */
- X0326,/*13/ 6 326 214 D6 capital O with diaeresis or umlaut mark */
- X0327,/*13/ 7 327 215 D7 multiplication sign */
- X0330,/*13/ 8 330 216 D8 capital O with slash */
- X0331,/*13/ 9 331 217 D9 capital U with grave accent */
- X0332,/*13/10 332 218 DA capital U with acute accent */
- X0333,/*13/11 333 219 DB capital U with circumflex accent */
- X0334,/*13/12 334 220 DC capital U with diaeresis or umlaut mark */
- X0335,/*13/13 335 221 DD capital Y with acute accent */
- X0336,/*13/14 336 222 DE capital thorn, Icelandic */
- X0337,/*13/15 337 223 DF small sharp s, German */
- X0340,/*14/ 0 340 224 E0 small a with grave accent */
- X0341,/*14/ 1 341 225 E1 small a with acute accent */
- X0342,/*14/ 2 342 226 E2 small a with circumflex accent */
- X0343,/*14/ 3 343 227 E3 small a with tilde */
- X0344,/*14/ 4 344 228 E4 small a with diaeresis or umlaut mark */
- X0345,/*14/ 5 345 229 E5 small a with ring */
- X0346,/*14/ 6 346 230 E6 small ae diphthong */
- X0347,/*14/ 7 347 231 E7 small c with cedilla */
- X0350,/*14/ 8 350 232 E8 small e with grave accent */
- X0351,/*14/ 9 351 233 E9 small e with acute accent */
- X0352,/*14/10 352 234 EA small e with circumflex accent */
- X0353,/*14/11 353 235 EB small e with diaeresis or umlaut mark */
- X0354,/*14/12 354 236 EC small i with grave accent */
- X0355,/*14/13 355 237 ED small i with acute accent */
- X0356,/*14/14 356 238 EE small i with circumflex accent */
- X0357,/*14/15 357 239 EF small i with diaeresis or umlaut mark */
- X0360,/*15/ 0 360 240 F0 small d with stroke, Icelandic eth */
- X0361,/*15/ 1 361 241 F1 small n with tilde */
- X0362,/*15/ 2 362 242 F2 small o with grave accent */
- X0363,/*15/ 3 363 243 F3 small o with acute accent */
- X0364,/*15/ 4 364 244 F4 small o with circumflex accent */
- X0365,/*15/ 5 365 245 F5 small o with tilde */
- X0366,/*15/ 6 366 246 F6 small o with diaeresis or umlaut mark */
- X0367,/*15/ 7 367 247 F7 division sign */
- X0370,/*15/ 8 370 248 F8 small o with slash */
- X0371,/*15/ 9 371 249 F9 small u with grave accent */
- X0372,/*15/10 372 250 FA small u with acute accent */
- X0373,/*15/11 373 251 FB small u with circumflex accent */
- X0374,/*15/12 374 252 FC small u with diaeresis or umlaut mark */
- X0375,/*15/13 375 253 FD small y with acute accent */
- X0376,/*15/14 376 254 FE small thorn, Icelandic */
- X0377,/*15/15 377 255 FF small y with diaeresis or umlaut mark */
- X};
- X
- X#include "78common.h"
- X
- X/* Different sections in a file: */
- X#define S_HDR 1 /* News article header.*/
- X#define S_BODY 2 /* News article body.*/
- X#define S_SIG 3 /* News article signature.*/
- X
- XPRIVATE double attack = 0.65; /* Smoothing factor.*/
- XPRIVATE double blank = 0.7; /* Scale attack/decay on blank lines.*/
- XPRIVATE double bodval = -200.0; /* Score at start of body.*/
- XPRIVATE double colon = 0.5; /* Scale attack/decay after colon.*/
- XPRIVATE boolT debug = FALSE; /* Debug flag.*/
- XPRIVATE double decay = 0.67; /* Smoothing factor.*/
- XPRIVATE boolT fixbody = FALSE; /* Ordinary file, no header or signature.*/
- XPRIVATE double headval = 0.0; /* For header values.*/
- XPRIVATE boolT mailbox = FALSE; /* Converting a mailbox.*/
- XPRIVATE double pound1 = -350.0; /* After # at beginning of line.*/
- XPRIVATE unsigned siglns = 9; /* Max lines in a signature.*/
- XPRIVATE double thresh = 0.0; /* Score above this is Danish.*/
- XPRIVATE triDifT dkustt[TRIMAX + 1];/* Trigram difference table.*/
- X
- XPRIVATE bStrT dkwords[] = /* These are always Danish.*/
- X {
- X NULBSTR
- X };
- X
- XPRIVATE bStrT uswords[] = /* These are never Danish.*/
- X {
- X S("[]"),
- X S("[The"),
- X NULBSTR
- X };
- X
- X#include "78heur.h"
- X
- X/* dkus - run heuristics on one file */
- X
- XPRIVATE void dkus (is, fn)
- XR9 streamT is; /* Input stream.*/
- X bStrT fn; /* File name.*/
- X
- X/* Function:
- X * Copy file to standard output, converting to ISO 8859/1.
- X * Algorithm:
- X * Read each line. Switch on section and look for section
- X * transitions. Step through the line. Look for section matches.
- X * Call dif78() on each word. Compute score. If word looks Danish,
- X * convert it. Write line.
- X * Returns:
- X *
- X * Notes:
- X *
- X */
- X{
- XR2 rcharT b; /* Current input byte.*/
- XR4 int i; /* General putpose.*/
- X double cum = 0.0; /* Cumulative score.*/
- X unsigned ln = 0; /* Input line number.*/
- X int lns = -1; /* Value from Lines: header field; -1 = unknown.*/
- XR8 unsigned sigln = 1; /* Line number in signature.*/
- XR5 bStrT p1; /* Rest of line after special match.*/
- XR1 bStrT lp; /* Steps through lb[].*/
- XR7 boolT sigbeg; /* Line looks like start of signature.*/
- XR3 bStrT wp = NULBSTR; /* Points to start of word.*/
- XR6 unsigned sect; /* Current section.*/
- X byteT lb[MLINE + 1]; /* Line buffer.*/
- X
- Xsect = (fixbody ? S_BODY : S_HDR);
- Xlb[0] = ' ';
- Xwhile (NULBSTR != (getlin ((lp = &lb[1]), MLINE, is, fn, &ln, 0)))
- X {
- X if (mailbox && (NULBSTR != prefix (S("From "), lp)))
- X {
- X cum = 0.0;
- X ln = 1;
- X lns = -1;
- X sect = S_HDR;
- X sigln = 1;
- X sigbeg = FALSE;
- X }
- X else
- X sigbeg = SigBegP (lp);
- X switch (sect)
- X {
- X case S_HDR:
- X if (EOS == B(*lp))
- X {
- X sect = S_BODY;
- X cum = bodval;
- X ln = 0;
- X }
- X else
- X {
- X if (NULBSTR != (p1 = prefix (S("Lines: "), lp)))
- X (void) a2i (p1, NULBSTR, TRUE, &lns, (bStrT *) NULL);
- X if (NULBSTR != (p1 = bStrChr (lp, ':')))
- X {
- X cum = headval;
- X lp = p1 + 1;
- X }
- X }
- X break;
- X case S_BODY:
- X if (sigbeg || (!fixbody && (lns > siglns) && (ln > (lns - siglns))))
- X sect = S_SIG;
- X else
- X {
- X for (; '>' == B(*lp); ++lp)
- X ;
- X if (('#' == B(*lp)) || ('X' == B(*lp)))
- X cum = MIN (cum, pound1);
- X }
- X break;
- X case S_SIG:
- X if (sigbeg)
- X sigln = 1;
- X else if (sigln <= siglns)
- X ++sigln;
- X else
- X {
- X sigln = 1;
- X sect = S_BODY;
- X }
- X break;
- X default:
- X malf1 (eIntern, "dkus 1");
- X break;
- X }
- X if (EOS == B(*lp)) cum *= blank * ((cum > thresh) ? decay : attack);
- X do
- X {
- X b = B(*lp);
- X if ((NULBSTR != (p1 = BraceP (lp, sect))) ||
- X (NULBSTR != (p1 = UunetP (lp))) ||
- X (NULBSTR != (p1 = IPP (lp))) ||
- X (NULBSTR != (p1 = InArtP (lp, sect))) ||
- X (NULBSTR != (p1 = GrafP (lp, sect))) ||
- X (NULBSTR != (p1 = PipeP (lp, sect))) ||
- X (NULBSTR != (p1 = EndP (lp, sect, S(") writes:")))) ||
- X (NULBSTR != (p1 = EndP (lp, sect, S(" \\n\\")))) ||
- X (NULBSTR != (p1 = LaTeXP (lp))))
- X {
- X lp = p1;
- X wp = NULBSTR;
- X }
- X else
- X {
- X if (byte2t[b] <= TRIHI)
- X {
- X if (NULBSTR == wp) wp = lp;
- X }
- X else
- X {
- X if (NULBSTR != wp)
- X {
- X i = dif78 (wp, lp, dkustt);
- X cum *= ((i > 0) ? attack : decay);
- X cum += i;
- X if (((cum > thresh) && !wordp (wp, lp, uswords)) ||
- X wordp (wp, lp, dkwords))
- X {
- X for (p1 = wp; p1 != lp; ++p1)
- X *p1 = dk8[B(*p1)];
- X }
- X if (debug)
- X FPRINTF (stderr, "%c%6.0f %.*s\n", "?hbsf"[sect], cum,
- X lp - wp, wp);
- X wp = NULBSTR;
- X if (':' == b)
- X cum *= colon * ((cum > thresh) ? decay : attack);
- X }
- X }
- X ++lp;
- X }
- X }
- X while (EOS != b);
- X puts (&lb[1]);
- X }
- X}
- X
- X/* main - main function */
- X
- XPUBLIC int main (argc, argv)
- X int argc; /* Number of arguments.*/
- XR3 bStrT *argv; /* Points to array of argument strings.*/
- X
- X/* Function:
- X *
- X * Algorithm:
- X * Decode args. Initialize. Call dkus().
- X * Notes:
- X *
- X */
- X
- X{
- XR1 rcharT c; /* Option letter.*/
- XR2 bStrT cp; /* Steps through args.*/
- Xextern int optind; /* See getopt (3).*/
- Xextern cStrT optarg; /* See getopt (3).*/
- X
- Xwhile (EOF != (c = getopt (argc, (cStrT *) argv, "#:A:B:D:b:c:dfh:ms:t:")))
- X {
- X switch (c)
- X {
- X case '?':
- X usage();
- X break;
- X case '#':
- X pound1 = ma2d ((bStrT) optarg, NULBSTR, FALSE, "# Value",
- X (bStrT *) NULL);
- X break;
- X case 'A':
- X attack = mra2d ((bStrT) optarg, NULBSTR, FALSE, "Attack", 0.001, 0.999,
- X (bStrT *) NULL);
- X break;
- X case 'B':
- X blank = ma2d ((bStrT) optarg, NULBSTR, FALSE, S("Blank smoothing"),
- X (bStrT *) NULL);
- X break;
- X case 'D':
- X decay = mra2d ((bStrT) optarg, NULBSTR, FALSE, "Decay", 0.001, 0.999,
- X (bStrT *) NULL);
- X break;
- X case 'b':
- X bodval = ma2d ((bStrT) optarg, NULBSTR, FALSE, "Body Value",
- X (bStrT *) NULL);
- X break;
- X case 'c':
- X colon = ma2d ((bStrT) optarg, NULBSTR, FALSE, S("Colon Smoothing"),
- X (bStrT *) NULL);
- X break;
- X case 'd':
- X debug = TRUE;
- X break;
- X case 'f':
- X fixbody = TRUE;
- X break;
- X case 'h':
- X headval = ma2d ((bStrT) optarg, NULBSTR, FALSE, S("Header Value"),
- X (bStrT *) NULL);
- X break;
- X case 'm':
- X mailbox = TRUE;
- X break;
- X case 's':
- X siglns = mra2u ((bStrT) optarg, NULBSTR, FALSE, "Max signature lines",
- X (unsigned) 1, (unsigned) 99, (bStrT *) NULL);
- X break;
- X case 't':
- X thresh = ma2d ((bStrT) optarg, NULBSTR, FALSE, "Threshold",
- X (bStrT *) NULL);
- X break;
- X default:
- X malf1 (eIntern, "main 1");
- X break;
- X }
- X }
- Xargv += optind;
- Xcp = *argv++;
- Xif (NULBSTR != cp) usage();
- Xipath();
- Xmrdtri (S("dkus"), (bStrT) dkustt);
- Xdkus (stdin, S("Standard Input"));
- Xmfflush (stdout, "Standard Output");
- Xexit (SUCCESS);
- X
- X#ifdef lint
- Xreturn (SUCCESS);
- X#endif
- X}
- END_OF_FILE
- if test 30798 -ne `wc -c <'78dkus.c'`; then
- echo shar: \"'78dkus.c'\" unpacked with wrong size!
- fi
- # end of '78dkus.c'
- fi
- if test -f '78triFreq.c' -a "${1}" != "-c" ; then
- echo shar: Will not clobber existing file \"'78triFreq.c'\"
- else
- echo shar: Extracting \"'78triFreq.c'\" \(4268 characters\)
- sed "s/^X//" >'78triFreq.c' <<'END_OF_FILE'
- X/*
- X * 78triFreq - compute trigram frequencies
- X */
- X
- X#ifndef lint
- Xstatic char _cpyrgt[] = "Copyright 1989 Howard Lee Gayle";
- X#endif lint
- X
- X/*
- X * This program is free software; you can redistribute it and/or modify
- X * it under the terms of the GNU General Public License version 1,
- X * as published by the Free Software Foundation.
- X *
- X * This program is distributed in the hope that it will be useful,
- X * but WITHOUT ANY WARRANTY; without even the implied warranty of
- X * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- X * GNU General Public License for more details.
- X *
- X * You should have received a copy of the GNU General Public License
- X * along with this program; if not, write to the Free Software
- X * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
- X */
- X
- X#include <stdio.h>
- X#include <howard/port.h>
- X#include <howard/version.h>
- X#include <howard/usage.h>
- X
- XMAINVER ("@(#)$Header: 78triFreq.c,v 2.2 89/08/25 11:15:35 howard Exp $");
- XUSAGE ("encodings < filenames > trigram-frequencies");
- X
- X#include <string.h>
- X#include <howard/malf.h>
- X#include <howard/registers.i>
- X#include "cz.h"
- X#include "78.h"
- X#include "78code.h"
- X
- XPRIVATE double tt; /* Total number of trigrams.*/
- XPRIVATE double tricnt[TRIMAX + 1]; /* Trigram counts.*/
- X
- X/* doword - process one word */
- X
- XPRIVATE void doword (wp)
- XR1 bStrT wp; /* Points to word.*/
- X
- X/* Function:
- X * Increment the count for each trigram in the word.
- X * Algorithm:
- X * Step through the word.
- X * Returns:
- X *
- X * Notes:
- X * 1) Word must already be converted to trigram codes.
- X * 2) wp[-1] == TRIBEG.
- X * 3) Word is terminated with TRIEND.
- X */
- X{
- Xdo
- X {
- X tricnt[TOTRI (wp[0], wp[1], wp[2])] += 1.0;
- X tt += 1.0;
- X ++wp;
- X }
- Xwhile (TRIEND != wp[1]);
- X}
- X
- X/* main - main function */
- X
- XPUBLIC int main (argc, argv)
- X int argc; /* Number of arguments.*/
- XR4 bStrT *argv; /* Points to array of argument strings.*/
- X
- X/* Function:
- X *
- X * Algorithm:
- X * Loop reading each line from stdin. Treat it as a path name and
- X * open it. Call doword() on each word in file.
- X * Compute scaling factor (s) for an implied denominator of 2^31 - 1.
- X * Compute max frequency (m) and number of digits to print it (d).
- X * Loop through trigram count vector and output each frequency, along
- X * with the trigram in printable form.
- X * Notes:
- X * 1) Every 1000 input files, write the file number and total trigrams
- X * counted so far. This shows progress is being made, since
- X * running it on a lot of files can take hours.
- X */
- X
- X{
- XR5 int d; /* Max digits in count.*/
- XR1 int i; /* General purpose.*/
- XR3 streamT is; /* Input stream.*/
- X unsigned ln = 0; /* Input line number.*/
- X double m = 0; /* Max frequency.*/
- X double s; /* Scaling factor.*/
- XR2 bStrT wp; /* Steps through wb[].*/
- X byteT fnb[MFILE]; /* File name buffer.*/
- X byteT wb[MLINE]; /* Word buffer.*/
- X
- Xif (2 != argc) usage();
- Xrdcode (argv[1]);
- Xwb[0] = TRIBEG;
- Xwp = &wb[1];
- Xwhile (NULBSTR != getlin (fnb, MFILE, stdin, S("Standard input"), &ln, 0))
- X {
- X is = fopen (fnb, "r");
- X if (NULSTRM == is)
- X malf0 ("%s: Can not open", fnb);
- X else
- X {
- X while (EOF != (i = getc (is)))
- X {
- X i = byte2t[i];
- X if (i <= TRIHI)
- X *wp++ = i;
- X else
- X {
- X if (wp != &wb[1])
- X {
- X *wp = TRIEND;
- X doword (wb);
- X wp = &wb[1];
- X }
- X }
- X }
- X if (ferror (is)) malf1 ("%s: Read error", fnb);
- X mfclose (is, fnb);
- X }
- X if (0 == (ln % 1000))
- X {
- X FPRINTF (stderr, "%u %.0f\n", ln, tt);
- X mfflush (stderr, S("Standard Error"));
- X }
- X }
- Xif (0.0 != tt)
- X {
- X PRINTF ("; Total trigrams: %.0f\n\n", tt);
- X s = 2147483647.0 / tt; /* 2^31 - 1.*/
- X for (i = 0; i <= TRIMAX; ++i)
- X if (tricnt[i] > m) m = tricnt[i];
- X SPRINTF ((cStrT) wb, "%.0f", m * s);
- X d = strlen ((cStrT) wb);
- X for (i = 0; i <= TRIMAX; ++i)
- X {
- X if (0.0 != tricnt[i])
- X PRINTF ("%*.0f %c%c%c\n", d, tricnt[i] * s,
- X t2byte[31 & (i >> 5)], t2byte[i >> 10], t2byte[31 & i]);
- X }
- X mfflush (stdout, S("Standard Output"));
- X }
- Xexit (SUCCESS);
- X
- X#ifdef lint
- Xreturn (SUCCESS);
- X#endif
- X}
- END_OF_FILE
- if test 4268 -ne `wc -c <'78triFreq.c'`; then
- echo shar: \"'78triFreq.c'\" unpacked with wrong size!
- fi
- # end of '78triFreq.c'
- fi
- if test -f 'MakeCommon' -a "${1}" != "-c" ; then
- echo shar: Will not clobber existing file \"'MakeCommon'\"
- else
- echo shar: Extracting \"'MakeCommon'\" \(1187 characters\)
- sed "s/^X//" >'MakeCommon' <<'END_OF_FILE'
- X# MakeCommon - common definitions for uMakefile and Makefile for cz
- X#
- X# $Header$
- X#
- X# Copyright 1989 Howard Lee Gayle
- X# This file is written in the ISO 8859/1 character set.
- X#
- X# This program is free software; you can redistribute it and/or modify
- X# it under the terms of the GNU General Public License version 1,
- X# as published by the Free Software Foundation.
- X#
- X# This program is distributed in the hope that it will be useful,
- X# but WITHOUT ANY WARRANTY; without even the implied warranty of
- X# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- X# GNU General Public License for more details.
- X#
- X# You should have received a copy of the GNU General Public License
- X# along with this program; if not, write to the Free Software
- X# Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
- X
- X# Copy stdin to stdout.
- XCAT=cat
- X
- X# Change mode of a file.
- XCHMOD=chmod
- X
- X# Get a file from the distribution directory.
- XDISTI=mkDistI
- X
- X# Macro processor.
- XM4=m4
- X
- X# Remove a file.
- XRM=zap -f
- X
- X# Stream editor.
- XSED=sed
- X
- X# Uncompress if necessary and check out from RCS or SCCS.
- XUNCMPRS=mkUncmprs
- X
- X# C include file search path.
- XINCLUDES=-I/usr/local/local-include -I/usr/local/free/howard/0/include
- END_OF_FILE
- if test 1187 -ne `wc -c <'MakeCommon'`; then
- echo shar: \"'MakeCommon'\" unpacked with wrong size!
- fi
- # end of 'MakeCommon'
- fi
- if test -f 'T-61.p4' -a "${1}" != "-c" ; then
- echo shar: Will not clobber existing file \"'T-61.p4'\"
- else
- echo shar: Extracting \"'T-61.p4'\" \(2817 characters\)
- sed "s/^X//" >'T-61.p4' <<'END_OF_FILE'
- X% T.61.p4 - PostScript for cz0 for CCITT T.61.
- X%
- X% $Header: T-61.p4,v 1.1 89/08/04 16:41:23 howard Exp $
- X%
- X% Copyright 1989 Howard Lee Gayle
- X% This file is written in the ISO 8859/1 character set.
- X%
- X% This program is free software; you can redistribute it and/or modify
- X% it under the terms of the GNU General Public License version 1,
- X% as published by the Free Software Foundation.
- X%
- X% This program is distributed in the hope that it will be useful,
- X% but WITHOUT ANY WARRANTY; without even the implied warranty of
- X% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- X% GNU General Public License for more details.
- X%
- X% You should have received a copy of the GNU General Public License
- X% along with this program; if not, write to the Free Software
- X% Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
- X
- Xinclude(ps-abbrev.m4)
- Xinclude(T-61.m4)
- X
- X/CharHeight % (character) CharHeight height
- X {% def
- X gsave
- X newpath
- X 0 0 moveto
- X true charpath flattenpath pathbbox
- X grestore
- X 4 1 roll PPOP PPOP PPOP
- X }PBIND PDEF
- X
- X/@ % (accent) (character) @
- X {% def
- X /AC exch PDEF % Accented character.
- X /DM exch PDEF % Diacritical mark.
- X currentpoint PPOP % Push current x.
- X AC PSHOW % Show character to be accented.
- X gsave % Come back here after printing accent.
- X currentpoint PPOP % Push current x.
- X sub % Negative width of character.
- X DM stringwidth PPOP % Push width of accent.
- X sub % Negative width of character plus accent.
- X 2 div % Half.
- X AC CharHeight
- X (x)CharHeight
- X sub % Subtract x height.
- X rmoveto % Move to left and up.
- X DM PSHOW % Add accent.
- X grestore
- X }PBIND PDEF
- X
- X/@Y % (accent) (character) delta-y @Y
- X {% def
- X /DY exch PDEF % Delta Y.
- X /AC exch PDEF % Accented character.
- X /DM exch PDEF % Diacritical mark.
- X currentpoint PPOP % Push current x.
- X AC PSHOW % Show character to be accented.
- X gsave % Come back here after printing accent.
- X currentpoint PPOP % Push current x.
- X sub % Negative width of character.
- X DM stringwidth PPOP % Push width of accent.
- X sub % Negative width of character plus accent.
- X 2 div % Half.
- X DY Size mul
- X rmoveto % Move to left and up.
- X DM PSHOW % Add accent.
- X grestore
- X }PBIND PDEF
- X
- X/@0{0 @Y}PBIND PDEF
- X
- X/Kern % (second-char) distance (first-char) Kern
- X {% def
- X PSHOW
- X Size mul neg 0 rmoveto
- X PSHOW
- X }PBIND def
- X
- X/@O % (accent) DeltaY DeltaX (character) Overlap
- X {% def
- X currentpoint PPOP % (accent) DeltaY DeltaX (character) current-x
- X exch PSHOW % (accent) DeltaY DeltaX current-x
- X gsave % Come back here after printing accent.
- X currentpoint PPOP % (accent) DeltaY DeltaX old-x current-x
- X sub % (accent) DeltaY DeltaX -width
- X exch Size mul add % (accent) DeltaY dx
- X exch Size mul % (accent) dx dy
- X rmoveto % (accent)
- X PSHOW
- X grestore
- X }PBIND PDEF
- END_OF_FILE
- if test 2817 -ne `wc -c <'T-61.p4'`; then
- echo shar: \"'T-61.p4'\" unpacked with wrong size!
- fi
- # end of 'T-61.p4'
- fi
- if test -f 'b.bib' -a "${1}" != "-c" ; then
- echo shar: Will not clobber existing file \"'b.bib'\"
- else
- echo shar: Extracting \"'b.bib'\" \(1926 characters\)
- sed "s/^X//" >'b.bib' <<'END_OF_FILE'
- X% b.bib - bibliography
- X%
- X% Copyright 1989 Howard Lee Gayle
- X% This file is written in the ISO 8859/1 character set.
- X%
- X% $Header: b.bib,v 1.5 89/09/22 07:44:48 howard Exp $
- X%
- X% This program is free software; you can redistribute it and/or modify
- X% it under the terms of the GNU General Public License version 1,
- X% as published by the Free Software Foundation.
- X%
- X% This program is distributed in the hope that it will be useful,
- X% but WITHOUT ANY WARRANTY; without even the implied warranty of
- X% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- X% GNU General Public License for more details.
- X%
- X% You should have received a copy of the GNU General Public License
- X% along with this program; if not, write to the Free Software
- X% Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
- X@book{Auden,
- X author = "W. H. Auden",
- X title = "Selected poetry of W. H. Auden",
- X publisher = "Vintage Books",
- X year = "1971",
- X address = "New York",
- X edition = "second"}
- X@misc{Gunnel,
- X author = {Gunnel K{\"a}llgren},
- X howpublished = "Personal communcation",
- X month = "August",
- X year = "1989"}
- X@manual{ISO:646,
- X title = "International Standard ISO 646,
- X Information processing---ISO 7-bit
- X coded character set for information interchange",
- X organization = "International Organization for Standardization",
- X edition = "second",
- X month = "July",
- X year = "1983"}
- X@manual{SWASCII,
- X title = "Svensk standard SS~63~61~27,
- X Data representation---Swedish 7-bit
- X coded character set for data interchange",
- X organization = "Standardiseringskommissionen i Sverige",
- X edition = "second",
- X month = "April",
- X year = "1984"}
- X@manual{Xerox,
- X title = "Xerox System Integration Standard XSIS~058404,
- X Character Code Standard",
- X organization = "Xerox Corporation",
- X address = "Stamford, Connecticut 10904, USA",
- X month = "April",
- X year = "1984"}
- END_OF_FILE
- if test 1926 -ne `wc -c <'b.bib'`; then
- echo shar: \"'b.bib'\" unpacked with wrong size!
- fi
- # end of 'b.bib'
- fi
- if test -f 'bytefreq.1' -a "${1}" != "-c" ; then
- echo shar: Will not clobber existing file \"'bytefreq.1'\"
- else
- echo shar: Extracting \"'bytefreq.1'\" \(1607 characters\)
- sed "s/^X//" >'bytefreq.1' <<'END_OF_FILE'
- X.\" $Header: bytefreq.1,v 1.1 89/08/09 16:22:25 howard Exp $
- X.TH BYTEFREQ 1 "$Revision: 1.1 $"
- X.SH NAME
- Xbytefreq \- frequency-count the bytes in a list of files
- X.SH SYNOPSIS
- X.B bytefreq
- X.RB [ " \-b " ]
- X.RB [ " \-d " ]
- X<
- X.I filenames
- X.SH COPYRIGHT
- XCopyright \(co 1989 Howard Lee Gayle
- X.SH DESCRIPTION
- X.I Bytefreq
- Xreads from standard input a list of file names, one per line.
- XIt generates a frequency table of the bytes in the files.
- XThe
- X.B \-b
- Xoption outputs the table in byte order.
- XThe
- X.B \-d
- Xoption outputs the table in descending frequency order.
- XBoth options may be used.
- X.SH EXAMPLE
- XGenerate a frequency table, in frequency order, of the bytes in
- Xall comp news articles:
- X.nf
- X % find /usr/spool/news/comp \-type f \-name '[0\-9]*' \-print | bytefreq \-d
- X.fi
- X.SH "SEE ALSO"
- X.IR 78 (1).
- X.SH LICENSE
- XThis program is free software; you can redistribute it and/or modify
- Xit under the terms of the GNU General Public License version 1,
- Xas published by the Free Software Foundation.
- X.PP
- XThis program is distributed in the hope that it will be useful,
- Xbut WITHOUT ANY WARRANTY; without even the implied warranty of
- XMERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- XGNU General Public License for more details.
- X.PP
- XYou should have received a copy of the GNU General Public License
- Xalong with this program; if not, write to the Free Software
- XFoundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
- X.SH AUTHOR
- XHoward Gayle,
- XTN/ETX/T/BG,
- XEricsson Telecom AB,
- XS-126 25 Stockholm,
- XSweden,
- Xhoward@ericsson.se,
- Xuunet!ericsson.se!howard,
- XPhone: +46 8 719 5565,
- XFAX: +46 8 719 9598,
- XTelex: 14910 ERIC S
- END_OF_FILE
- if test 1607 -ne `wc -c <'bytefreq.1'`; then
- echo shar: \"'bytefreq.1'\" unpacked with wrong size!
- fi
- # end of 'bytefreq.1'
- fi
- echo shar: End of archive 3 \(of 14\).
- cp /dev/null ark3isdone
- MISSING=""
- for I in 1 2 3 4 5 6 7 8 9 10 11 12 13 14 ; do
- if test ! -f ark${I}isdone ; then
- MISSING="${MISSING} ${I}"
- fi
- done
- if test "${MISSING}" = "" ; then
- echo You have unpacked all 14 archives.
- rm -f ark[1-9]isdone ark[1-9][0-9]isdone
- else
- echo You still need to unpack the following archives:
- echo " " ${MISSING}
- fi
- ## End of shell archive.
- exit 0
-
-